# Spring MVC Framework


์Šคํ”„๋ง MVC ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋™์ž‘ํ•˜๋Š” ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ url์„ ํ†ตํ•ด ์š”์ฒญํ•  ๋•Œ ์ผ์–ด๋‚˜๋Š” ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋™์ž‘์„ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด๋‹ค.


# MVC ์ง„ํ–‰ ๊ณผ์ •


  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ url์„ ์š”์ฒญํ•˜๋ฉด, ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์Šคํ”„๋ง์œผ๋กœ request๊ฐ€ ๋ณด๋‚ด์ง„๋‹ค.
  • Dispatcher Servlet์ด request๋ฅผ ๋ฐ›์œผ๋ฉด, Handler Mapping์„ ํ†ตํ•ด ํ•ด๋‹น url์„ ๋‹ด๋‹นํ•˜๋Š” Controller๋ฅผ ํƒ์ƒ‰ ํ›„ ์ฐพ์•„๋‚ธ๋‹ค.
  • ์ฐพ์•„๋‚ธ Controller๋กœ request๋ฅผ ๋ณด๋‚ด์ฃผ๊ณ , ๋ณด๋‚ด์ฃผ๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ Model์„ ๊ตฌ์„ฑํ•œ๋‹ค.
  • Model์—์„œ๋Š” ํŽ˜์ด์ง€ ์ฒ˜๋ฆฌ์— ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ Database์— ์ ‘๊ทผํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฌธ์„ ํ†ตํ•ด ๊ฐ€์ ธ์˜จ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ์–ป์€ Model ์ •๋ณด๋ฅผ Controller์—๊ฒŒ response ํ•ด์ฃผ๋ฉด, Controller๋Š” ์ด๋ฅผ ๋ฐ›์•„ Model์„ ์™„์„ฑ์‹œ์ผœ Dispatcher Servlet์—๊ฒŒ ์ „๋‹ฌํ•ด์ค€๋‹ค.
  • Dispatcher Servlet์€ View Resolver๋ฅผ ํ†ตํ•ด request์— ํ•ด๋‹นํ•˜๋Š” view ํŒŒ์ผ์„ ํƒ์ƒ‰ ํ›„ ๋ฐ›์•„๋‚ธ๋‹ค.
  • ๋ฐ›์•„๋‚ธ View ํŽ˜์ด์ง€ ํŒŒ์ผ์— Model์„ ๋ณด๋‚ธ ํ›„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ผ ํŽ˜์ด์ง€๋ฅผ ์™„์„ฑ์‹œ์ผœ ๋ฐ›์•„๋‚ธ๋‹ค.
  • ์™„์„ฑ๋œ View ํŒŒ์ผ์„ ํด๋ผ์ด์–ธํŠธ์— responseํ•˜์—ฌ ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค.

# ๊ตฌ์„ฑ ์š”์†Œ


# Dispatcher Servlet

๋ชจ๋“  request๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ค‘์‹ฌ ์ปจํŠธ๋กค๋Ÿฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์—์„œ http ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  request์— ๋Œ€ํ•ด ์ œ์ผ ์•ž๋‹จ์—์„œ ์ค‘์•™์ง‘์ค‘์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ํ•œ๋‹ค.

๊ธฐ์กด์—๋Š” web.xml์— ๋ชจ๋‘ ๋“ฑ๋กํ•ด์ค˜์•ผ ํ–ˆ์ง€๋งŒ, ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์ด ๋ชจ๋“  request๋ฅผ ํ•ธ๋“ค๋งํ•˜๋ฉด์„œ ์ž‘์—…์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.


# Handler Mapping

ํด๋ผ์ด์–ธํŠธ์˜ request url์„ ์–ด๋–ค ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์ง€ ์ฐพ์•„์„œ Dispatcher Servlet์—๊ฒŒ ์ „๋‹ฌํ•ด์ฃผ๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•œ๋‹ค.

์ปจํŠธ๋กค๋Ÿฌ ์ƒ์—์„œ url์„ ๋งคํ•‘์‹œํ‚ค๊ธฐ ์œ„ํ•ด @RequestMapping์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์ด๋ฅผ ์ฐพ์•„์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.


# Controller

์‹ค์งˆ์ ์ธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณณ์ด๋‹ค. Dispatcher Servlet์ด ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ๋ผ๋ฉด, ์ด ๊ณณ์€ ๋ฐฑ์—”๋“œ ์ปจํŠธ๋กค๋Ÿฌ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋ชจ๋ธ์˜ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋‹ด์•„ Dispatcher Servlet์—๊ฒŒ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.


# View Resolver

์ปจํŠธ๋กค๋Ÿฌ์˜ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค view๋ฅผ ๊ฒฐ์ •ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•œ๋‹ค. ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒํ™ฉ์— ๋งž๊ฒŒ ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค.



# [์ฐธ๊ณ ์‚ฌํ•ญ]

์ตœ์ข… ์ˆ˜์ • : 12/17/2022, 7:23:59 AM